<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES6 对于对象 使用的扩展 ；

        // 1. 对象键名和键值 的简写
        // 对象里如果键名和键值一样 可以省略；

        // var myname = "张三";
        // var age = 20;
        // var height = "178cm"
        // // ES5写法；
        // // var obj = {
        // //     myname:myname,
        // //     age:age
        // // }

        // // console.log(obj);

        // // ES6的简写 
        // var obj = {
        //     myname,
        //     age,
        //     myheight:height,
        //     hobby:"hobby"
        // }
        // console.log(obj);


        // 2. 对于函数的简写 ；

        // ES5 对象里写函数 ；
        // var obj = {
        //     myname:"张三",
        //     fn1:function(){
        //         console.log("fn1");
        //     },
        //     fn2:function(){
        //         console.log("fn2");
        //     }
        // }

        // obj.fn1();
        // obj.fn2();

        // ES6 对象里的函数 ； 把 冒号 和 function 省略掉 
        // var myname = "张三";
        // let obj  = {
        //     myname,
        //     age:20,
        //     fn1(){
        //         console.log("fn1");
        //     },
        //     fn2(){
        //         console.log("fn2");
        //     },
        //     fn3:function(){
        //         console.log("fn3");
        //     },
        //     fn4:()=>{
        //         console.log("fn4");
        //     }
        // }

        // console.log(obj);
        // obj.fn1();
        // obj.fn2();
        // obj.fn3();
        // obj.fn4();


        // 3. 动态的对象键名 ；

        // ES5 对于键名不能解析变量；
        // 对象的键名 只能是字符串；
        // var myname = "name";
        // var obj = {
        //     myname:"张三",
        //     age:20,
        //     bar:myname
        // }
        // console.log(obj);



        // ES6 可以给键名  加上 [] 解析变量；
        // 键名加了中括号之后 ，如果没有引号 那么就会当成变量解析 ，否则就是字符串解析
        // 对象的键名 只能是字符串；
        var myname = "name";
        var bar = {hello:"nihao"};
        var obj = {
            [myname+1]:"张三",
            age:20,
            height:"178cm",
            [bar]:"val"
        }
        console.log(obj);

        for(key in obj){
            console.log(typeof key);
        }




    </script>
</body>
</html>